/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pe.edu.uch.syscom.managedbeans;

import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;
import pe.edu.uch.syscom.mapping.TbUsuario;
import pe.edu.uch.syscom.utils.CommonDAO;
import pe.edu.uch.syscom.utils.CommonWeb;
import pe.edu.uch.syscom.utils.ConstantesWeb;

/**
 *
 * @author USUARIO
 */
public class LoginMB {

    private String m_sMensaje;
    private String m_sUsuario;
    private String m_sPassword;

    /**
     * Creates a new instance of LoginMB
     */
    public LoginMB() {
    }

    public String getPassword() {
        return m_sPassword;
    }

    public void setPassword( String sPassword ) {
        m_sPassword = sPassword;
    }

    public String getUsuario() {
        return m_sUsuario;
    }

    public void setUsuario( String sUsuario ) {
        m_sUsuario = sUsuario;
    }

    public String getMensaje() {
        return m_sMensaje;
    }

    public void setMensaje( String m_sMensaje ) {
        this.m_sMensaje = m_sMensaje;
    }

    public String checkUser() {
        TbUsuario usuario;
        String sRedirectLogin;

        m_sMensaje = "Error, el usuario o password son incorrectos.";
        sRedirectLogin = ConstantesWeb.MSJ_REDIRECT_LOGIN_ERROR;
        try {
            usuario = CommonDAO.getTbUsuarioDAO().traerUsuarioPorUsername( m_sUsuario );
            if ( usuario != null ) {
                if ( usuario.getPassword().equals( m_sPassword ) ) {

                    CommonWeb.setUsuarioSesion( usuario );

                    if ( ConstantesWeb.TIPO_USUARIO_ADMIN.equals( usuario.getTipoUsuario() ) ) {
                        sRedirectLogin = ConstantesWeb.MSJ_REDIRECT_LOGIN_OK_ADMIN;
                    } else if ( ConstantesWeb.TIPO_USUARIO_CAJA.equals( usuario.getTipoUsuario() ) ) {
                        sRedirectLogin = ConstantesWeb.MSJ_REDIRECT_LOGIN_OK_CAJA;
                    } else if ( ConstantesWeb.TIPO_USUARIO_VENTAS.equals( usuario.getTipoUsuario() ) ) {
                        sRedirectLogin = ConstantesWeb.MSJ_REDIRECT_LOGIN_OK_VENTAS;
                    } else {
                        sRedirectLogin = ConstantesWeb.MSJ_REDIRECT_LOGIN_ERROR;
                    }
                }
            } else {
                sRedirectLogin = ConstantesWeb.MSJ_REDIRECT_LOGIN_ERROR;
            }
        } catch ( Exception ex ) {
            m_sMensaje = "Error al iniciar sesión, comunicarse con soporte técnico.";
            sRedirectLogin = ConstantesWeb.MSJ_REDIRECT_LOGIN_ERROR;
        }
        return sRedirectLogin;
    }

    public void cerrarSesion() {
        try {
            ExternalContext context = FacesContext.getCurrentInstance().getExternalContext();
            HttpSession session = (HttpSession) context.getSession( false );
            session.invalidate();
            FacesContext.getCurrentInstance().getExternalContext().redirect( "../autenticar/login.jsf" );
        } catch ( IOException ex ) {
            Logger.getLogger( LoginMB.class.getName() ).log( Level.SEVERE, null, ex );
        }
    }
}
